/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package reclamos;

import com.csvreader.CsvReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;

public class Leercsvexpe {
    int aux =0;

    public static void imp(String x) {
        System.out.println(x);
        
    }

    public Leercsvexpe(String ruta) throws IOException {
        try {
            conexion con = new conexion();
            CsvReader expedientes = new CsvReader(ruta);
            expedientes.readHeaders();
            String Linea_Aerea;
            String Estacion;
            String Tipo_expediente;
            String Fecha_expediente;
            String Numero_expediente;
            String Codigo_Perdida;
            String Codigo_Linea;
            String Estacion_Responsable;
            String Expediente_Asociado;
            String Nombre_pasajero;
            String Apellido_pasajero;
            String Telefono;
            String Direccion;
            String Cantidad_equipaje;
            String Costo_Total;
            String Codigo_Costo;
            String Fecha_Cierre;
            String Routing;
            String Kit_Pasajero;
            String Monto_mon_local;
            String Otras_Companias;
            String Frequent_Flyer;
            String Clase_Tarifaria;
            String fecha_expediente_nueva = null;
            String fecha_cierre_nueva = null;
            int contador = 0;
            

       
        
            while (expedientes.readRecord()) {
                Linea_Aerea = expedientes.get("Linea_Aerea");
                if (Linea_Aerea.length() == 0) {
                    Linea_Aerea = "NULL";
                    contador++;
                }
                Estacion = expedientes.get("Estacion");
                if (Estacion.length() == 0) {
                    Estacion = "NULL";
                    contador++;
                }
                Tipo_expediente = expedientes.get("Tipo_expediente");
                if (Tipo_expediente.length() == 0) {
                    Tipo_expediente = "NULL";
                    contador++;
                }
                Fecha_expediente = expedientes.get("Fecha_expediente");
                Numero_expediente = expedientes.get("Numero_expediente");
                if (Numero_expediente.length() == 0) {
                    Numero_expediente = "NULL";
                    contador++;
                }
                Codigo_Perdida = expedientes.get("Codigo_Perdida");
                if (Codigo_Perdida.length() == 0) {
                    Codigo_Perdida = "NULL";
                    contador++;
                }
                 Codigo_Linea = expedientes.get("Codigo_Linea");
                if (Codigo_Linea.length() == 0) {
                    Codigo_Linea = "NULL";
                    contador++;
                }
                Estacion_Responsable = expedientes.get("Estacion_Responsable");
                if (Estacion_Responsable.length() == 0) {
                    Estacion_Responsable = "NULL";
                    contador++;
                }
                Expediente_Asociado = expedientes.get("Expediente_asociado");
                if (Expediente_Asociado.length() == 0) {
                    Expediente_Asociado = "NULL";
                    contador++;
                }
                Nombre_pasajero = expedientes.get("Nombre_pasajero");
                if (Nombre_pasajero.length() == 0) {
                    Nombre_pasajero = "NULL";
                    contador++;
                }
                Apellido_pasajero = expedientes.get("Apellido_pasajero");
                if (Apellido_pasajero.length() == 0) {
                    Apellido_pasajero = "NULL";
                    contador++;
                }
                Telefono = expedientes.get("Telefono");
                if (Telefono.length() == 0) {
                    Telefono = "NULL";
                    contador++;
                }
                Direccion = expedientes.get("Direccion");
                if (Direccion.length() == 0) {
                    Direccion = "NULL";
                    contador++;
                }
              
                Cantidad_equipaje = expedientes.get("Cantidad_equipaje");
                if (Cantidad_equipaje.length() == 0) {
                    Cantidad_equipaje = "NULL";
                    contador++;
                }
                Costo_Total = expedientes.get("Costo_Total");
                if (Costo_Total.length() == 0) {
                    Costo_Total = "NULL";
                    contador++;
                }
                //Codigo_Costo = expedientes.get("Codigo_Costo");
                Fecha_Cierre = expedientes.get("Fecha_Cierre");
                Routing = expedientes.get("Routing");
                if (Routing.length() == 0) {
                    Routing = "NULL";
                    contador++;
                }       
                
                //Kit_Pasajero = expedientes.get("Kit_Pasajero");
                //Monto_mon_local = expedientes.get("Monto_mon_local");
                Otras_Companias = expedientes.get("Otras_Companias");
                if (Otras_Companias.length() == 0) {
                    Otras_Companias = "NULL";
                    contador++;
                }
         
                Clase_Tarifaria = expedientes.get("Clase_Tarifaria");
                if (Clase_Tarifaria.length() == 0) {
                    Clase_Tarifaria = "NULL";
                    contador++;
                }
                Frequent_Flyer = expedientes.get("Frequent_Flyer");
                 if (Frequent_Flyer.length() == 0) {
                    Frequent_Flyer = "NULL";
                    contador++;
                }
                if (Fecha_expediente.length() > 0) {
                    fecha_expediente_nueva = this.dateFormatter(Fecha_expediente);
                    /**
                     * cambiar_fecha(Fecha_expediente);*
                     */
                }
                if (fecha_expediente_nueva == null) {
                    fecha_expediente_nueva = "NULL";
                    contador++;
                }
                if (Fecha_Cierre.length() > 0) {
                    fecha_cierre_nueva = this.dateFormatter(Fecha_Cierre);
                    /**
                     * cambiar_fecha(Fecha_Cierre);*
                     */
                }
                if (fecha_cierre_nueva == null) {
                    fecha_cierre_nueva = "NULL";
                    contador++;
                }
                aux++;
                con.insertarexp(Linea_Aerea, Estacion, Tipo_expediente, fecha_expediente_nueva, Numero_expediente, Codigo_Perdida, Estacion_Responsable, Expediente_Asociado, Nombre_pasajero, Apellido_pasajero, Telefono, Direccion, Cantidad_equipaje, Costo_Total, fecha_cierre_nueva, Routing, Otras_Companias, Clase_Tarifaria,Frequent_Flyer, contador);
                contador = 0;
                fecha_cierre_nueva = null;
            }
            System.out.println(aux);
            expedientes.close();
            try {
                con.conexion.close();
            } catch (SQLException ex) {
                Logger.getLogger(Leercsvexpe.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Leercsvexpe.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
    public int getSize() {
        return aux;
    }

    public String dateFormatter(String formatToParse) {

        String format = "";

        SimpleDateFormat format1 = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss");
        SimpleDateFormat format2 = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
        SimpleDateFormat format3 = new SimpleDateFormat("dd-MMM-yy");

        SimpleDateFormat finalFormat = new SimpleDateFormat("yyyy-MM-dd");

        Date parser;

        try {
            parser = format1.parse(formatToParse);
            format = finalFormat.format(parser);
        } catch (ParseException e1) {

            try {
                parser = format2.parse(formatToParse);
                format = finalFormat.format(parser);
            } catch (ParseException e2) {

                try {
                    parser = format3.parse(formatToParse);
                    format = finalFormat.format(parser);
                } catch (ParseException e3) {
                    System.err.println("Error: La fecha entregada no es valida para procesarse.");
                    e2.printStackTrace();
                }

            }
        }

        return format;
    }
    

    private String cambiar_fecha(String fecha) {


        String estado = null;
        String fechanueva = null;
        try {
            if (fecha.length() > 0) {
                String dia1 = fecha.substring(0, 2);
                String mes1 = fecha.substring(3, 6);
                String anio1 = fecha.substring(7, 11);

                switch (mes1) {
                    case "Jan":
                        mes1 = "01";
                        break;
                    case "Feb":
                        mes1 = "02";
                        break;
                    case "Mar":
                        mes1 = "03";
                        break;
                    case "Apr":
                        mes1 = "04";
                        break;
                    case "May":
                        mes1 = "05";
                        break;
                    case "Jun":
                        mes1 = "06";
                        break;
                    case "Jul":
                        mes1 = "07";
                        break;
                    case "Aug":
                        mes1 = "08";
                        break;
                    case "Sep":
                        mes1 = "09";
                        break;
                    case "Oct":
                        mes1 = "10";
                        break;
                    case "Nov":
                        mes1 = "11";
                        break;
                    case "Dec":
                        mes1 = "12";
                        break;
                    case "Ene":
                        mes1 = "01";
                        break;
                    case "Abr":
                        mes1 = "04";
                        break;
                    case "Ago":
                        mes1 = "08";
                        break;
                    case "Dic":
                        mes1 = "12";
                        break;
                }

                fechanueva = anio1 + "-" + mes1 + "-" + dia1;

                if ("null-null-null".equals(fechanueva)) {
                    fechanueva = null;
                }
            }

        } catch (StringIndexOutOfBoundsException ex) {
            estado = ex.getMessage();
        }


        return fechanueva;
    }
}
